home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO071.dsk / SEARCH.BAS < prev    next >
BASIC Source File  |  2012-02-16  |  21KB  |  384 lines

  1. 1  GOTO 896
  2. 2  VTAB VT +1: POKE OC,HT: RETURN 
  3. 3  VTAB 23: POKE OC,0: RETURN 
  4. 4  VTAB 24: POKE OC,0: CALL BL: RETURN 
  5. 5  GOSUB 4: PRINT M1$;: RETURN 
  6. 6 LV% = 2: GOTO 8
  7. 7 LV% = LV -1
  8. 8  POKE 34,0: POKE 35,24: VTAB 1: POKE OC,0: &  PRINT USEF0$;FI$,M1$(LV),"Escape :" +M1$(LV%): & LINE,223,79: VTAB 22: POKE OC,0: & LINE,173,79: GOSUB 12: POKE 34,2: POKE 35,21: VTAB 3: RETURN 
  9. 9  GOSUB 3: &  PRINT USEF1$;M;: &  FRE(0,K): POKE OC,69: &  PRINT USEF5$;K;: RETURN 
  10. 10  VTAB V: POKE OC,H: PRINT MS$": ";:VT =  PEEK(37):HT =  PEEK(OC): IF VT >22  THEN  CALL BL
  11. 11  RETURN 
  12. 12  GOSUB 3: CALL BL: GOSUB 4: RETURN 
  13. 13 OA = 0: IF  PEEK(49152) >127  THEN OA =  PEEK(49152) -128: & BEEP
  14. 14  POKE 49168,0: RETURN 
  15. 15 V1 = (((I <15) *I) +((I =  >15) *15)) +5:H1 = 19
  16. 16  VTAB V1: POKE OC,H1: & LINE,32,45: POKE OC,19: &  PRINT USE">##:";I;: RETURN 
  17. 20 MS$ = "Skipped":A = I:A$ = W1$(MA%): GOTO 22
  18. 21 MS$ = "Inserted":A = I:A$ = W1$(A)
  19. 22  VTAB V1 +1: POKE OC,H1: & LINE,32,45: POKE OC,H1: &  PRINT USEF3$;MS$,I,A$: RETURN 
  20. 30 MS$ = "Too SHORT": GOTO 40
  21. 31 MS$ = "Used word before": GOTO 40
  22. 32 MS$ = "No words entered": GOTO 40
  23. 33 MS$ = "Nothing to save": GOTO 40
  24. 34 MS$ = "WARNING:LOW MEMORY": GOTO 40
  25. 40 HT =  PEEK(OC):VT =  PEEK(37): GOSUB 4: & BEEP: PRINT MS$": "M2$;: &  GET ,A: GOSUB 4: GOSUB 2: RETURN 
  26. 50  & BOX,3,CH +2,CV +1,CL -5,CW -2: VTAB CV +2: POKE OC,CH +3: INVERSE : &  PRINT USE LEFT$(CN$,CW -4);MS$;: NORMAL : RETURN 
  27. 52  & BOX,3,CH +12,CV +1,CN +2,CW: VTAB CV +2: POKE OC,CH +13: INVERSE : &  PRINT USE LEFT$(CN$,CW -2);MS$;: NORMAL : RETURN 
  28. 54  GOSUB 270: GOSUB 370: IF   NOT NF  THEN MS$ = "No list files": GOSUB 40:OA = 27: RETURN 
  29. 56 CW = 17:MS$ = RO$:CL = 7 +((NF <7) *NF) +((NF >6) *7): GOSUB 50:CN = CL -7: GOSUB 12: PRINT M3$;: &  LIST ,FI$(0),CH +3,CV +2,CN,NF,DI,0,S: RETURN 
  30. 100  GOSUB 10
  31. 102  GOSUB 2: &  INPUT ,A$,QL,73,DI: IF OA = 27  THEN  POP : RETURN 
  32. 104  &  VAL(A$,A,A%): IF A% <0  THEN  & BEEP: GOTO 102
  33. 106  RETURN 
  34. 110  GOSUB 10: GOSUB 2: CALL BL: &  INPUT ,A$,QL,73,DI: IF OA = 27  THEN  POP 
  35. 114  RETURN 
  36. 118 MS$ = MS$ +" ?(Y/N)":DE =  ASC(A$): GOSUB 10
  37. 120  GOSUB 2: &  GET ,A:OA = A:A = A -((A >90) *32): IF OA = 13  OR OA = 27  THEN A = DE: GOTO 124
  38. 122  IF   NOT (A = 78  OR A = 89)  THEN  & BEEP: GOTO 120
  39. 124 YN = (A = 89): POKE OC,HT: PRINT  MID$ (" NOYES",(YN *3) +1,3);: RETURN 
  40. 128  GOSUB 4: PRINT M2$;: &  GET ,A: GOSUB 12: IF A = 27  THEN  POP 
  41. 130  RETURN 
  42. 134  GOSUB 7: POKE 34,2: POKE 35,21: HOME 
  43. 136  FOR I = 1 TO LV: GOSUB 270: & CARD,M1$(I),CH,CV,CL,CW: NEXT 
  44. 138  GOSUB 9: RETURN 
  45. 140 M$(FX +1) = "Exit": IF FX <6  THEN  FOR I = 1 TO FX:M$(I) = M$(I) + CHR$(13): NEXT 
  46. 142 DI = 0: GOSUB 134: GOSUB 5: & MENU,M$(1),CH +6,CV +3,FX +1,1,DI,S: IF OA = 27  THEN S = FX +1
  47. 146  IF OA = 27  AND LV >1  THEN  POP 
  48. 148  RETURN 
  49. 200 M = 0: FOR Z = 1 TO MO: IF  LEN(W1$(Z)) >2  THEN M = M +1
  50. 202  NEXT : RETURN 
  51. 210 MM = 0: FOR Z = 1 TO MO: IF  LEN(W$(Z))  AND  LEN(W1$(Z))  THEN MM = MM +1
  52. 212  NEXT : RETURN 
  53. 220  IF   NOT ( LEN(HO$))  THEN FL = 2: RETURN 
  54. 222 A$ = "":FL = 0: FOR J = 1 TO  LEN(HO$):A =  ASC( MID$ (HO$,J,1)):A =  FN U(A)
  55. 224  IF (A >64  AND A <123)  THEN A$ = A$ + CHR$(A)
  56. 226  NEXT :HO$ = A$:A$ = "": RETURN 
  57. 230  IF   NOT ( LEN(HO$))  THEN FL = 2: RETURN 
  58. 232 A$ = "":FL = 0: FOR J = 1 TO  LEN(HO$)
  59. 234 A =  ASC( MID$ (HO$,J,1)):A =  FN U(A):A$ = A$ + CHR$(A)
  60. 236  NEXT :HO$ = A$:A$ = "": RETURN 
  61. 240 TW =  INT(((TX/10) *CI)) -2
  62. 242  IF ((W *2) -2) > = TW  THEN W =  INT((TW/2) -2): & BEEP
  63. 244  IF L >L%  THEN L = L%: & BEEP
  64. 246  IF PS = 1  AND CI = 5  THEN  IF L > = L%  THEN L =  INT(L/2): & BEEP
  65. 248  IF PS = 0  AND CI = 5  THEN  IF L >(L% -4)  THEN L = L% -4: & BEEP
  66. 250  RETURN 
  67. 260  &  CLEAR A$,W$,W1$,W: DIM A$(W% *2,L%),W$(MA%),W1$(MA%),W(MA%,3):M = 0:FI$ = "None": RETURN 
  68. 262  &  CLEAR A$,W$: DIM A$(W% *2,L%),W$(MA%): RETURN 
  69. 264  &  CLEAR A$: DIM A$(W% *2,L%): RETURN 
  70. 270 CH = 8 +(I *2):CV = I *2:CL = 17 -(((I >0) *I) +((I >3) *(I -3))):CW = 55: RETURN 
  71. 300 FX = 4:LV = 3:M1$(LV) = "Save file": GOSUB 7: GOSUB 134: IF   NOT M  THEN  GOSUB 33: RETURN 
  72. 302 HO$ = FI$: GOSUB 230:A$ = HO$: VTAB CV +8: POKE OC,CH +6: PRINT "Filename: ";: &  INPUT ,A$,10,73,DI: IF OA = 27  THEN  RETURN 
  73. 304  IF  LEFT$(A$,1) <"A"  THEN 302
  74. 306 B$ = A$: ONERR  GOTO 316
  75. 308  GOSUB 3: PRINT D$"VERIFY LIST."B$: ONERR  GOTO 880
  76. 310 V = 24:H = 1:MS$ = "REPLACE " +B$:A$ = "N": GOSUB 118: IF OA = 27  THEN  RETURN 
  77. 312  IF   NOT YN  THEN 302
  78. 314  PRINT D$"DELETE LIST."B$: GOTO 318
  79. 316  &  ONERR (EC)
  80. 318  ONERR  GOTO 880
  81. 320  GOSUB 3: PRINT D$"OPEN LIST."B$: PRINT D$"WRITE LIST."B$: PRINT  STR$(M): FOR Z = 1 TO M: PRINT W1$(Z): NEXT :FI$ = B$: PRINT D$"CLOSE": RETURN 
  82. 330 FX = 4:LV = 3:M1$(LV) = "Load file": GOSUB 7: GOSUB 134: GOSUB 54: IF OA = 27  OR   NOT NF  THEN  RETURN 
  83. 331 A$ = FI$(S): GOSUB 3: PRINT D$"VERIFY LIST."A$: GOSUB 260:FI$ = A$: PRINT D$"OPEN LIST."FI$: PRINT D$"READ LIST."FI$: INPUT A$:M =  VAL(A$): VTAB 23: POKE OC,0: &  PRINT USE"Words to load: ###";M;
  84. 332  IF M >MA%  THEN M = MA%:MO = MA%
  85. 333  IF M <1  THEN  GOSUB 32: PRINT D$"CLOSE": RETURN 
  86. 334  FOR I = 1 TO M: INPUT W1$(I): NEXT : PRINT D$"CLOSE"
  87. 336  FOR I = 1 TO M:HO$ = W1$(I): GOSUB 4: PRINT "Insert "HO$;: GOSUB 220:W$(I) = HO$: NEXT : RETURN 
  88. 340 FX = 4:LV = 3:M1$(LV) = "Delete File": GOSUB 7: GOSUB 134: GOSUB 54
  89. 342 A$ = "LIST." +FI$(S): GOSUB 3: PRINT D$"VERIFY"A$: PRINT D$"DELETE"A$: RETURN 
  90. 350 FX = 4:LV = 3:M1$(LV) = "Set Prefix": GOSUB 7: GOSUB 134
  91. 352  VTAB CV +8: POKE OC,CH +6: PRINT "Prefix ";:A$ = RO$: &  INPUT ,A$,CW -14,73,DI: IF A$ = ""  THEN  RETURN 
  92. 354  IF  LEFT$(A$,1) < >"/"  OR  LEN(A$) <3  THEN 352
  93. 356  GOSUB 3: PRINT D$"VERIFY"A$:RO$ = A$: PRINT D$"PREFIX "RO$: RETURN 
  94. 360  GOSUB 3:A$ = "KEY." +FI$: PRINT D$"OPEN"A$: PRINT D$"WRITE"A$: GOSUB 700: PRINT D$"CLOSE": RETURN 
  95. 362  GOSUB 3:A$ = "PUZ." +FI$: PRINT D$"OPEN"A$: PRINT D$"WRITE"A$: GOSUB 702: PRINT D$"CLOSE": RETURN 
  96. 370  GOSUB 3:NF = 0: PRINT D$"OPEN"RO$",TDIR": PRINT D$"READ"RO$
  97. 372  INPUT A$,A$,A$: GOTO 376
  98. 374  IF  MID$ (B$,18,3) = "TXT"  AND  MID$ (B$,2,5) = "LIST."  THEN FI$(NF) =  MID$ (B$,7,10):NF = NF +1: IF NF >50  THEN 378
  99. 376  INPUT B$: IF  LEN(B$)  THEN 374
  100. 378  INPUT A$: PRINT D$"CLOSE": RETURN 
  101. 380 LV = LV +1:M1$(LV) = "Catalog " +RO$: GOSUB 7:LV = LV -1930:CO = 0: VTAB 3: HOME : PRINT D$"OPEN"RO$",TDIR": PRINT D$"READ"RO$: INPUT A1$,A2$,A3$: PRINT A1$: PRINT A3$: GOTO 386
  102. 382 CO = 0: VTAB 3: PRINT D$"OPEN"RO$",TDIR": PRINT D$"READ"RO$: INPUT A1$,A2$,A3$: PRINT A1$: PRINT A3$: GOTO 386
  103. 384 A$ =  LEFT$(B$,1): PRINT "|"; MID$ (B$,18,3);A$; MID$ (B$,2,15);:CO = CO +1
  104. 386  INPUT B$: IF  LEN(B$)  THEN 384
  105. 388  INPUT A$: PRINT D$"CLOSE": GOSUB 12: VTAB 23: POKE OC,0: PRINT A$;: POKE OC,69: PRINT " FILES:" + STR$(CO);: GOSUB 128: RETURN 
  106. 400 LV = 3:M1$(LV) = "Create List": GOSUB 7: GOSUB 134
  107. 402  IF   NOT M  THEN 408
  108. 404 V = 24:H = 0:MS$ = "Delete present list":A$ = "N": GOSUB 118
  109. 406  IF   NOT YN  OR OA = 27  THEN  RETURN 
  110. 408  GOSUB 260: GOTO 416
  111. 410 LV = 3:M1$(LV) = "Edit List": GOSUB 7: GOSUB 134
  112. 412  IF   NOT M  THEN  GOSUB 32: RETURN 
  113. 414  GOSUB 262: GOTO 422
  114. 416 V = 24:H = 0:MS$ = "Filename":QL = 10:A$ = FI$: IF A$ = "None"  THEN A$ = ""
  115. 418  GOSUB 110: IF  LEFT$(A$,1) <"A"  OR  LEN(A$) <1  THEN 418
  116. 420 FI$ = A$
  117. 422  VTAB 3: HOME :DI = 207: VTAB 4: POKE OC,29: PRINT "Use "F$(1);"-O for Options"
  118. 424  & LINE,223,79: POKE 34,5: POKE 35,21: VTAB 6: HOME 
  119. 426  FOR I = 1 TO MO
  120. 428 HO$ = W1$(I): GOSUB 230:HH$ = HO$
  121. 430  GOSUB 15: &  INPUT ,HO$,30,73,DI:HH$ = HO$: IF OA = 27  THEN  RETURN 
  122. 432  IF OA = 13  AND W1$(I) < >""  THEN 436
  123. 434  IF OA = DI  THEN 460
  124. 436  GOSUB 220: GOSUB 230: IF FL = 2  THEN  GOSUB 30: GOTO 428
  125. 438  IF  LEN(W$(I)) >0  THEN 444
  126. 440 FL = 0: FOR J = 1 TO M: IF   NOT FL  THEN  IF HO$ = W$(J)  THEN FL = 1
  127. 442  NEXT : IF FL  THEN  GOSUB 31: GOTO 428
  128. 444 W$(I) = HO$:W1$(I) = HH$
  129. 446  GOSUB 15: INVERSE : PRINT W$(I);: NORMAL 
  130. 448  IF I =  >15  THEN  CALL  -912
  131. 450  NEXT : GOSUB 200: IF I >1000  THEN  RETURN 
  132. 452  IF M <1  THEN  GOSUB 32: RETURN 
  133. 454 V = 24:H = 0:MS$ = "SAVE TO DISK":A$ = "Y": GOSUB 118: IF YN  THEN  GOSUB 300
  134. 456  RETURN 
  135. 460 LV = LV +1:M1$(LV) = "Option": GOSUB 7:LV = LV -1
  136. 462  GOSUB 4: PRINT "<B>ackup <D>one <S>ave :";
  137. 464  &  GET ,A:A =  FN U(A): IF A = 27  THEN  GOSUB 7: GOTO 430
  138. 466  IF A = 66  AND  LEN(W1$(I -1)) >1  THEN I = I -1: GOSUB 7: GOTO 428
  139. 468  IF A = 68  THEN  GOSUB 200: RETURN 
  140. 470  IF A = 83  THEN  GOSUB 200:A$ = FI$: GOSUB 306: GOSUB 7: RETURN 
  141. 472  & BEEP: GOTO 462
  142. 500 LV = LV +1:M1$(LV) = "Insert": GOSUB 7: HOME : IF   NOT M  THEN  GOSUB 32: RETURN 
  143. 502 V = 24:H = 0:A$ = TI$:MS$ = "Title":QL = 40: GOSUB 110:TI$ = A$: VTAB 4: POKE OC,22
  144. 504  PRINT F$(1);" - S to skip   <esc> to stop": & LINE,223,79: POKE 34,5: POKE 35,21: VTAB 6: HOME 
  145. 506  GOSUB 264:H1 = 25:I = 0: GOSUB 210
  146. 510 I = I +1: IF I >MM  THEN 552
  147. 512 LN =  LEN(W$(I)):NT = 0
  148. 514 SD = DD( FN A(28))
  149. 516 SX =  FN A(W):X1 = SX +(LN -1) *XY(SD,1): IF X1 <1  OR X1 >W  THEN 514
  150. 518 SY =  FN A(L):X1 = SY +(LN -1) *XY(SD,2): IF X1 <1  OR X1 >L  THEN 514
  151. 520  GOSUB 13: IF OA = 27  THEN  RETURN 
  152. 522  IF OA = 83  THEN 530
  153. 524 NT = NT +1:V1 =  PEEK(37): IF NT < >((L *W)/2)  THEN 534
  154. 526 MS$ = "CAN'T FIT ": GOSUB 40:V = 24:H = 0:MS$ = "SKIP " +W1$(I): GOSUB 118: VTAB V1 +1: POKE OC,H1: IF OA = 27  THEN  RETURN 
  155. 528  IF   NOT YN  THEN NT = 0: GOTO 512
  156. 530  IF I =  >MM  THEN MS$ = "No more words": GOSUB 40: GOSUB 20: GOTO 550
  157. 532 H$ = W$(I):HH$ = W1$(I): FOR Z = I TO (MO -1):W$(Z) = W$(Z +1):W1$(Z) = W1$(Z +1): NEXT :W$(MA%) = H$:W1$(MA%) = HH$:W$(MA%) = "": GOSUB 20:MM = MM -1: GOTO 512
  158. 534 J = SY:K = SX
  159. 536  GOSUB 3: &  PRINT USEF2$;NT,I,MM,W1$(I);: VTAB V1 +1: POKE OC,H1
  160. 538  FOR P = 1 TO LN: IF  LEN(A$(K,J))  AND A$(K,J) < > MID$ (W$(I),P,1)  THEN 514
  161. 540 J = J +XY(SD,2):K = K +XY(SD,1): NEXT P
  162. 542 J = SY:K = SX
  163. 544  FOR P = 1 TO LN:A$(K,J) =  MID$ (W$(I),P,1):J = J +XY(SD,2):K = K +XY(SD,1): NEXT 
  164. 546 W(I,1) = SX:W(I,2) = SY:W(I,3) = SD
  165. 548  GOSUB 21
  166. 550  GOTO 510
  167. 552  GOSUB 600: RETURN 
  168. 600  GOSUB 210
  169. 602 LV = LV +1:M1$(LV) = "Make keys (" + STR$(NK) +")": GOSUB 6: HOME : GOSUB 136
  170. 604  FOR Q1 = 1 TO W: FOR Q2 = 1 TO L: IF A$(Q1,Q2) = ""  THEN A$(Q1,Q2) = "."
  171. 606  NEXT : GOSUB 13: IF OA = 27  THEN 636
  172. 608  NEXT : IF   NOT NK  THEN 618
  173. 610 M1$(LV) = "Print Key": GOSUB 6: GOSUB 136: & BEEP
  174. 612  IF DU  THEN  GOSUB 360: GOTO 618
  175. 614  GOSUB 128
  176. 616  GOSUB 700
  177. 618 LV = LV +1:M1$(LV) = "Make puzzle (" + STR$(NP) +")": GOSUB 6: GOSUB 136
  178. 620  FOR Q1 = 1 TO W: FOR Q2 = 1 TO L
  179. 622  IF A$(Q1,Q2) = "."  THEN A$(Q1,Q2) =  CHR$( FN A(26) +64)
  180. 624  NEXT : GOSUB 13: IF OA = 27  THEN 636
  181. 626  NEXT : IF   NOT NP  THEN 636
  182. 628 M1$(LV) = "Print Puzzle": GOSUB 6: GOSUB 136: & BEEP
  183. 630  IF DU  THEN  GOSUB 362: GOTO 636
  184. 632  GOSUB 128
  185. 634  GOSUB 702
  186. 636  GOSUB 264: RETURN 
  187. 700 ZZ = NK: GOTO 704
  188. 702 ZZ = NP
  189. 704 LP = 0: FOR LP = 1 TO ZZ:TB = 1: IF   NOT DU  THEN TB =  INT((TW -((W *2) -2))/2)
  190. 706  IF   NOT DU  THEN  PRINT  CHR$(4)"PR#"SLOT$: IF LP >1  THEN  PRINT  CHR$(12)
  191. 708  IF   NOT DU  THEN  PRINT PC$(PS,6): PRINT PC$(PS,2)
  192. 710  IF   NOT HD  THEN 716
  193. 712  PRINT : PRINT "NAME ";:UN = TX -15: GOSUB 750: PRINT 
  194. 714  PRINT "PERIOD _____   DATE ___________________": PRINT 
  195. 716  PRINT  TAB( (TX - LEN(TI$))/2);TI$: PRINT : IF   NOT DU  THEN  PRINT PC$(PS,PI)
  196. 718  PRINT :UN = TW -1: GOSUB 752
  197. 720  FOR J = 1 TO L: PRINT  TAB( TB);: FOR K = 1 TO W: PRINT A$(K,J);" ";
  198. 722  NEXT : GOSUB 13: IF OA = 27  THEN 744
  199. 724  PRINT : NEXT : PRINT :UN = TW -1: GOSUB 752: IF   NOT DU  THEN  PRINT PC$(PS,2)
  200. 726 MS$ = "Find the HIDDEN words above"
  201. 728  PRINT : PRINT  TAB( (TX - LEN(MS$))/2);MS$: PRINT 
  202. 730  IF LI  THEN 740
  203. 732 X =  INT((MM/2) +.59): FOR I = 1 TO X
  204. 734  &  PRINT USE">##. ";I;: &  PRINT USEF4$;W1$(I);: IF X +I >MM  THEN 738
  205. 736  PRINT  TAB( 5): &  PRINT USE">##. ";X +I;: PRINT W1$(X +I);
  206. 738  PRINT : NEXT : GOTO 744
  207. 740  FOR I = 1 TO MM: &  PRINT USE">##. ";I;: PRINT W1$(I);
  208. 742 UN = TX -( LEN(W1$(I)) +5): GOSUB 750: PRINT : PRINT "     ";:UN = TX -5: GOSUB 750: NEXT 
  209. 744  PRINT : IF   NOT DU  THEN  PRINT  CHR$(12): PRINT D$"PR#0"
  210. 746  RETURN 
  211. 750  FOR Z = 1 TO UN: PRINT "_";: NEXT : PRINT : RETURN 
  212. 752  FOR Z = 1 TO UN: PRINT "=";: NEXT : PRINT : RETURN 
  213. 800  FOR I = 1 TO 28: READ DD(I): NEXT 
  214. 802  DATA   1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,1,2,3,4,5,6,7
  215. 804  FOR I = 8 TO 1  STEP  -1: READ XY(I,1),XY(I,2): NEXT : RESTORE : RETURN 
  216. 806  DATA   1,1,0,1,1,-1,-1,0,-1,-1,0,-1,-1,1,1,0
  217. 810 XY(1,1) = 1:XY(1,2) = 0: RETURN 
  218. 812 XY(2,1) =  -1:XY(2,2) = 1: RETURN 
  219. 814 XY(3,1) = 0:XY(3,2) =  -1: RETURN 
  220. 816 XY(4,1) =  -1:XY(4,2) =  -1: RETURN 
  221. 818 XY(5,1) =  -1:XY(5,2) = 0: RETURN 
  222. 820 XY(6,1) = 1:XY(6,2) =  -1: RETURN 
  223. 822 XY(7,1) = 0:XY(7,2) = 1: RETURN 
  224. 824 XY(8,1) = 1:XY(8,2) = 1: RETURN 
  225. 830  VTAB 14: POKE OC,55: PRINT F$(1);
  226. 832 A$ = " ": IF XY(8,1) = 1  AND XY(8,2) = 1  THEN A$ = "*"
  227. 834  VTAB 12: POKE OC,58: PRINT A$;
  228. 836 A$ = "  ": IF XY(7,1) = 0  AND XY(7,2) = 1  THEN A$ = F$(5)
  229. 838  VTAB 16: POKE OC,55: PRINT A$;
  230. 840 A$ = " ": IF XY(6,1) = 1  AND XY(6,2) =  -1  THEN A$ = "*"
  231. 842  VTAB 16: POKE OC,58: PRINT A$;
  232. 844 A$ = " ": IF XY(5,1) =  -1  AND XY(5,2) = 0  THEN A$ = F$(2)
  233. 846  VTAB 14: POKE OC,52: PRINT A$;
  234. 848 A$ = " ": IF XY(4,1) =  -1  AND XY(4,2) =  -1  THEN A$ = "*"
  235. 850  VTAB 16: POKE OC,52: PRINT A$;
  236. 852 A$ = " ": IF XY(3,1) = 0  AND XY(3,2) =  -1  THEN A$ = F$(3)
  237. 854  VTAB 12: POKE OC,55: PRINT A$;
  238. 856 A$ = " ": IF XY(2,1) =  -1  AND XY(2,2) = 1  THEN A$ = "*"
  239. 858  VTAB 12: POKE OC,52: PRINT A$;
  240. 860 A$ = " ": IF XY(1,1) = 1  AND XY(1,2) = 0  THEN A$ = F$(4)
  241. 862  VTAB 14: POKE OC,58: PRINT A$;: VTAB 3: RETURN 
  242. 864  GOSUB 810: RETURN 
  243. 870  GOSUB 824: GOSUB 820: GOSUB 810: RETURN 
  244. 872  GOSUB 824: GOSUB 820: GOSUB 810: GOSUB 814: GOSUB 822: RETURN 
  245. 874  GOSUB 824: GOSUB 820: GOSUB 818: GOSUB 816: GOSUB 812: GOSUB 810: RETURN 
  246. 876  GOSUB 800: RETURN 
  247. 878  GOSUB 814: GOSUB 822: RETURN 
  248. 880  &  ONERR (EC): IF EC% = 255  THEN  RESUME 
  249. 882  GOSUB 3: PRINT D$"CLOSE": PRINT D$"PR#0"
  250. 884 MS$ = EC$: IF EC% = 16  THEN MS$ = MS$ +", LINE " + STR$(EC)
  251. 886  GOSUB 40: IF EC% = 77  THEN  RUN 
  252. 888  GOTO 900
  253. 896  ONERR  GOTO 880
  254. 898  GOSUB 2000
  255. 900 FX = 3:LV = 1: CALL 54915:M1$(LV) = "Main Menu":M$(1) = "Wordsearch":M$(2) = "Disk":M$(3) = "Size Reset": GOSUB 140: ON S GOSUB 904,908,912,976: GOTO 900
  256. 904 FX = 5:LV = 2:M1$(LV) = "Wordsearch":M$(1) = "Start Wordsearch":M$(2) = "Start a new list":M$(3) = "Edit a list":M$(4) = "Load a list":M$(5) = "Change Defaults": GOSUB 140: IF S >FX  THEN  RETURN 
  257. 906  ON S GOSUB 500,400,410,330,916: &  FRE(0,K): GOTO 904
  258. 908 FX = 5:LV = 2:M1$(LV) = "Disk":M$(1) = "Load list":M$(2) = "Save List":M$(3) = "Delete List":M$(4) = "Catalog":M$(5) = "Set Prefix": GOSUB 140: IF S >FX  THEN  RETURN 
  259. 910  ON S GOSUB 330,300,340,380,350: GOTO 908
  260. 912 FX = 1:LV = 2:M1$(LV) = "Size Reset":M$(1) = "Reset Puzzle Size": GOSUB 140: IF S >FX  THEN  RETURN 
  261. 914  ON S GOSUB 1000: GOTO 912
  262. 916 LS = 0:FX = 11:LV = 3:M1$(LV) = "Options": GOSUB 134: GOTO 920
  263. 918 FX = 11:LV = 3:M1$(LV) = "Options"
  264. 920  &  PRINT USEF4$ TO M$(0);"Printer..........." +P$(PS)
  265. 921  &  PRINT USEF4$ TO M$(1);"Char/inch........." + STR$(CI)
  266. 922  &  PRINT USEF4$ TO M$(2);"Keys ............." + STR$(NK)
  267. 923  &  PRINT USEF4$ TO M$(3);"Puzzles .........." + STR$(NP)
  268. 924  &  PRINT USEF4$ TO M$(4);"Puzzle length ...." + STR$(L)
  269. 925  &  PRINT USEF4$ TO M$(5);"Puzzle width ....." + STR$(W *2)
  270. 926  &  PRINT USEF4$ TO M$(6);"Maximum entries .." + STR$(MO) +"/" + STR$(MA%)
  271. 927  &  PRINT USEF4$ TO M$(7);"Reset directions.."
  272. 928  &  PRINT USEF4$ TO M$(8);"Heading space ...." + MID$ (" NOYES",(HD *3) +1,3);
  273. 929  &  PRINT USEF4$ TO M$(9);"Definition space ." + MID$ (" NOYES",(LI *3) +1,3);
  274. 930  &  PRINT USEF4$ TO M$(10);"Print to textfile." + MID$ (" NOYES",(DU *3) +1,3);
  275. 931  &  PRINT USEF4$ TO M$(11);"EXIT"
  276. 932  GOSUB 270: & BOX,3,CH +1,CV +1,CL -4, LEN(F4$) +5: VTAB CV +2: POKE OC,CH +2: INVERSE : &  PRINT USE LEFT$(CN$, LEN(F4$) +3);"SELECT OPTION";: NORMAL : GOSUB 12: PRINT M3$;
  277. 934  &  LIST ,M$(0),CH +2,CV +2,CL -6,FX +1,DI,LS,S: IF S = FX  OR OA = 27  THEN  RETURN 
  278. 936 MS$ =  LEFT$(M$(S),18):V = 24:H = 0:LS = S:S = S +1: ON S GOSUB 988,992,938,942,946,950,954,966,960,962,964: GOTO 918
  279. 938 A$ =  STR$(NK):QL = 3: GOSUB 100: IF A <0  OR A >255  THEN 938
  280. 940 NK = A: RETURN 
  281. 942 A$ =  STR$(NP):QL = 3: GOSUB 100: IF A <0  OR A >255  THEN 942
  282. 944 NP = A:NK = NK *(NP >0): RETURN 
  283. 946 A$ =  STR$(L):QL = 3: GOSUB 100: IF A <3  OR A >L%  OR A >255  THEN 946
  284. 948 L = A: RETURN 
  285. 950 QL = 3:A$ =  STR$(W *2): GOSUB 100: IF A <10  OR A >(W% *2)  THEN 950
  286. 952 W =  INT(A/2): RETURN 
  287. 954 A$ =  STR$(MO):QL = 3: GOSUB 100: IF A <3  OR A >MA%  THEN 954
  288. 956 MO = A: IF M  THEN  IF MO <M  THEN MS$ = "Truncate list":A$ = "Y": GOSUB 118: IF YN  THEN M = MO
  289. 958  RETURN 
  290. 960 HD = (HD = 0): RETURN 
  291. 962 LI = (LI = 0): RETURN 
  292. 964 DU = (DU = 0): RETURN 
  293. 966 FX = 7:LV = 4:M1$(LV) = "Adjust Vectors":M$(1) = "Left to right only":M$(2) = "Forward only":M$(3) = "Forward, up, and down ":M$(4) = "Forward and backwards":M$(5) = "All directions":M$(6) = "Vertical only":M$(7) = "Exit"
  294. 968  GOSUB 7: GOSUB 136
  295. 970  GOSUB 830: GOSUB 5: & MENU,M$(1),CH +6,CV +3,FX,1,DI,S: IF S = 7  OR OA = 27  THEN LV = LV -1: GOSUB 134: RETURN 
  296. 972  FOR I = 1 TO 8:XY(I,1) =  -9999:XY(I,2) =  -9999: NEXT 
  297. 974  ON S GOSUB 864,870,872,874,876,878: GOTO 970
  298. 976 FX = 4:LV = 2:M1$(LV) = "QUIT": GOSUB 7: GOSUB 134
  299. 978 V = CV +8:H = CH +8:MS$ = "Quit":A$ = "N": GOSUB 118: IF   NOT YN  OR OA = 27  THEN  RETURN 
  300. 980 V = CV +10:MS$ = "Quit to BASIC":A$ = "Y": GOSUB 118: IF OA = 27  THEN  RETURN 
  301. 982  IF YN  THEN  PRINT D$"-"EXIT$"SEARCH.QUIT"
  302. 984  IF   NOT YN  THEN  PRINT D$"BYE": END 
  303. 986  GOTO 980
  304. 988  GOSUB 270:CN = PN +1:CW = 15:MS$ = "PRINTERS": GOSUB 52: GOSUB 12: PRINT M3$;: &  LIST ,P$(0),CH +13,CV +2,CN,CN,DI,PS,S: IF OA = 27  THEN  RETURN 
  305. 990 PS = S: RETURN 
  306. 992 M$(0) = "05 CPI":M$(1) = "09 CPI":M$(2) = "10 CPI":M$(3) = "12 CPI":M$(4) = "13 CPI":M$(5) = "17 CPI"
  307. 994  FOR J = 0 TO 5: &  PRINT USE"=#########" TO M$(J);M$(J): NEXT :MS$ = "CHARACTERS": GOSUB 270:CN = 6:CW = 15: GOSUB 52: GOSUB 12: PRINT M3$;: &  LIST ,M$(0),CH +13,CV +2,CN,CN,DI,PI,S: IF OA = 27  THEN  RETURN 
  308. 996  IF   NOT  LEN(PC$(PS,S))  THEN MS$ = "Undefined Code": GOSUB 40: GOTO 992
  309. 998 CI =  VAL(M$(S)):PI = S: GOSUB 240: RETURN 
  310. 1000 FX = 4:LV = LV +1:M1$(LV) = "Reset MATRIX": GOSUB 7: GOSUB 134
  311. 1002 V = CV +4:H = CH +6:MS$ = "Maximum # words":A$ =  STR$(MA%):QL = 3: GOSUB 100
  312. 1004  IF A <5  OR A >255  THEN 1002
  313. 1006 MA% = A:MO = A
  314. 1008 V = CV +6:H = CH +6:MS$ = "Maximum length":A$ =  STR$(L%):QL = 3: GOSUB 100
  315. 1010  IF A <10  OR A >255  THEN 1008
  316. 1012 L% =  INT(A): ONERR  GOTO 880
  317. 1014 V = CV +8:H = CH +6:MS$ = "Maximum width":A$ =  STR$(W% *2):QL = 3: GOSUB 100
  318. 1016  IF A <10  THEN 1014
  319. 1018 W% =  INT(A/2):L = L%:W = W%: GOSUB 240: GOSUB 260: &  FRE(0,K): IF K >2700  THEN  RETURN 
  320. 1020  GOSUB 34: RETURN 
  321. 2000  DEF  FN A(Z) =  INT( RND( PEEK(76) + PEEK(79) *256) *Z +1)
  322. 2002  DEF  FN U(Z) = A -(((A >90) *32) +((A >160) *96) +((A >227) *32))
  323. 2004 MA% = 50:MA = MA%:MO = MA%:M = 0:W = 30:W% = W:L = 40:L% = L
  324. 2006 NK = 1:NP = 1:HD = 1:LI = 0:DU = 0:NF = 0
  325. 2008  DIM A$(W% *2,L%),W$(MA%),W1$(MA%),W(MA%,3),DD(28): GOSUB 800
  326. 2010  DIM M$(12),FI$(50),P$(5),PC$(5,6)
  327. 2012 D$ =  CHR$(4):E$ =  CHR$(27):FI$ = "None":M1$(0) = "Quit":LV = 1
  328. 2014 BL =  -868:BP =  -958:OC = 1403:DI = 0
  329. 2016 MT$ = E$ + CHR$(15):RT$ =  CHR$(14) + CHR$(24)
  330. 2018 M1$ = "Type number, use arrows, or use mouse. Press RETURN."
  331. 2020 M2$ = "Press space bar to continue."
  332. 2022 M3$ = "Select item from list..."
  333. 2024 M4$ = MT$ +"C" +RT$
  334. 2026 B$ = "AHKUJ": FOR I = 1 TO 5:F$(I) = MT$ + MID$ (B$,I,1) +RT$: NEXT 
  335. 2028 CN$ = "": FOR I = 1 TO 78:CN$ = CN$ +"#": NEXT :CN$ = "=" +CN$
  336. 2030 A$ = MT$ +"XY" +RT$ +": ####################":B$ = "#########################"
  337. 2032 F0$ = A$ +" =" +B$ +" >" +B$:B$ = "":F5$ = "Mem:>#####"
  338. 2034 F1$ = "Words:### ":F4$ = "################################"
  339. 2036 F2$ = "Try #### on word ###/###  " +F4$:F3$ = ">####### >## - " +F4$
  340. 2038  PRINT D$"PREFIX": INPUT RO$:EXIT$ = RO$
  341. 2040  GOSUB 2100:TW = TX -2: RETURN 
  342. 2100 TX = 80:CI = 10:SLOT$ = "1"
  343. 2102 PS = 1:PI = 2:PN = 4
  344. 3000 X = 0:P$(X) = "Apple IW2"
  345. 3001 PC$(X,0) =  CHR$(14) +E$ +"n"
  346. 3002 PC$(X,1) =  CHR$(15) +E$ +"n"
  347. 3003 PC$(X,2) =  CHR$(15) +E$ +"N"
  348. 3004 PC$(X,3) =  CHR$(15) +E$ +"E"
  349. 3005 PC$(X,4) =  CHR$(15) +E$ +"q"
  350. 3006 PC$(X,5) =  CHR$(15) +E$ +"Q"
  351. 3007 PC$(X,6) =  CHR$(9) +"136N"
  352. 3100 X = 1:P$(X) = "Star NP-10"
  353. 3101 PC$(X,0) = E$ +"h" + CHR$(1)
  354. 3102 PC$(X,1) =  CHR$(15) +E$ +"W" + CHR$(1)
  355. 3103 PC$(X,2) = E$ +"W" + CHR$(0) +E$ +"h" + CHR$(0) +E$ +"P"
  356. 3104 PC$(X,3) = E$ +"M"
  357. 3105 PC$(X,4) = ""
  358. 3106 PC$(X,5) =  CHR$(15)
  359. 3107 PC$(X,6) =  CHR$(9) +"136N"
  360. 3200 X = 2:P$(X) = "Epson"
  361. 3201 PC$(X,0) = E$ +"h" + CHR$(1)
  362. 3202 PC$(X,1) =  CHR$(15) +E$ +"W" + CHR$(1)
  363. 3203 PC$(X,2) = E$ +"@" +E$ +"P"
  364. 3204 PC$(X,3) = E$ +"M"
  365. 3205 PC$(X,4) = ""
  366. 3206 PC$(X,5) =  CHR$(15)
  367. 3207 PC$(X,6) =  CHR$(9) +"136N"
  368. 3300 X = 3:P$(X) = "OKI 82"
  369. 3301 PC$(X,0) = ""
  370. 3302 PC$(X,1) = ""
  371. 3303 PC$(X,2) =  CHR$(24) + CHR$(30)
  372. 3304 PC$(X,3) =  CHR$(28)
  373. 3305 PC$(X,4) = ""
  374. 3306 PC$(X,5) =  CHR$(29)
  375. 3307 PC$(X,6) =  CHR$(9) +"136N"
  376. 3400 X = 4:P$(X) = "NEC 8023A"
  377. 3402 PC$(X,0) =  CHR$(5) +E$ +"N"
  378. 3404 PC$(X,1) =  CHR$(5) +E$ +"Q"
  379. 3406 PC$(X,2) = E$ +"N"
  380. 3408 PC$(X,3) = E$ +"E"
  381. 3410 PC$(X,4) = ""
  382. 3412 PC$(X,5) = E$ +"Q"
  383. 3414 PC$(X,6) =  CHR$(9) +"136N"
  384. 3999  RETURN